Streaming media (including but not limited to video and/or audio), in which content delivery networks stream media to clients, has become very popular. In general, streaming media comprises a linear sequence of segmented content transmitted to a client device. The segments are typically on the order of a few seconds of data that are each transmitted to the client device, buffered at the client device and played from the buffer. In this way, a client device can begin playing content such as a video before the entire video is downloaded, or even as live video is being captured.
For some streaming media, a viewer can choose the quality (e.g., the resolution of the video) that is streamed. For example, this allows some users with a high-bandwidth connection to view high quality (e.g., high definition) video, whereas users with a lower-bandwidth connection, lower resolution device and/or limited data plan can view the streaming video with less data transfer involved. This can be automatically set up by a user and/or predetermined for a given connection.
Another way in which video (including audio) may be streamed is adaptive bitrate streaming, which dynamically adapts the video quality to try and provide the highest quality video without allowing the buffer to become depleted. To this end, a video encoder can encode, for example, three separate adaptations for each video segment, such as high, medium and low quality adaptations corresponding to fast, medium and slow client bitrates. If the client's buffer is becoming depleted, rather than pause the video to refill the buffer once the buffer becomes empty, one or more lower quality segments are streamed to keep the buffered data ahead of the current video position (if not already sending the lowest quality segments). Conversely, higher quality segments may be streamed as the buffer starts to fill up, up to the highest quality available. The general tradeoff with adaptive bitrate streaming is that the viewer does not have to wait somewhere in the middle of viewing a video as the next set of data gets buffered, however the viewer may detect varying video quality.
While these concepts provide some benefits and advantages in viewing streaming video, streaming video is still linear in nature.